package com.fgxia.admin.service;


import com.ruoyi.business.domain.bo.admin.*;
import com.ruoyi.business.domain.vo.OrderFeeConfigVo;
import com.ruoyi.business.domain.vo.OrderFeeVo;
import com.ruoyi.business.domain.vo.OrderInfoVo;
import com.ruoyi.business.domain.vo.admin.AdminOrderExportVo;
import com.ruoyi.business.domain.vo.admin.AdminOrderQueryVo;
import com.ruoyi.business.domain.vo.admin.AdminOrderRevaluationVo;
import com.ruoyi.business.domain.vo.admin.OrderResultVo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;

import java.util.List;

public interface IAdminOrderService {

    /**
     * 获取订单详情(编辑用)
     *
     * @param orderId
     * @return
     */
    OrderInfoVo selectOrderById(Long orderId);

    /**
     * 获取订单详情（查询用）
     *
     * @param orderId
     * @return
     */
    AdminOrderQueryVo queryOrderById(Long orderId);

    /**
     * 新增订单
     *
     * @param orderAddBo 订单新增业务对象
     * @return
     */
    OrderResultVo insertOrder(AdminOrderAddBo orderAddBo);

    /**
     * 修改订单
     *
     * @param orderAddBo
     * @return
     */
    OrderResultVo updateOrder(AdminOrderAddBo orderAddBo);

    /**
     * 获取订单可改价项
     *
     * @param orderId
     * @return
     */
    List<OrderFeeVo> getPriceItemVoList(Long orderId);

    /**
     * 修改订单价格
     *
     * @param price
     * @return
     */
    Boolean updateOrderPrice(AdminPriceEditBo price);

    /**
     * 上传订单打款凭证
     *
     * @param payment
     * @return
     */
    Boolean insertPayment(AdminUploadBillBo payment);

    /**
     * 获取订单列表
     *
     * @param orderQueryBo 订单列表查询bo
     * @param pageQuery    分页查询
     * @return
     */
    TableDataInfo<OrderInfoVo> listOrder(AdminOrderQueryBo orderQueryBo, PageQuery pageQuery);

    /**
     * 获取订单费用配置项列表
     *
     * @return
     */
    List<OrderFeeConfigVo> selectFeeConfigList();

    /**
     * 获取订单改价历史列表
     *
     * @param orderId 订单id
     * @return
     */
    AdminOrderRevaluationVo listOrderPrice(Long orderId);

    /**
     * 导出订单列表
     *
     * @param orderQueryBo
     * @return
     */
    List<AdminOrderExportVo> listExportOrder(AdminOrderQueryBo orderQueryBo);
}
